/*!
 * Plugin do jQuery para envio de e-mails com AJAX
 * 
 * @author Renato Lenz e Wiliame Morais @ PC4Team
 *
 */
(function($) {
	$.fn.ajaxLista = function(opcoes) {
		var este = this;
		var config = {
			url: this.attr('url'),
			next: this.find('.proxima'), 
			prev: this.find('.anterior'),
			pagina: 1,
			limite: 10,
			totalPaginas: 1,
			carregando: 'Carregando...',
			callback: function(retorno, este) {
				este.append('<div class="pagina ' + retorno.pagina + '">' + retorno.rs + '</div>');
			},
			tipo: 'json'
		};
		$.extend(config, opcoes);
		var pagina = config.pagina;
		
		function mostraPagina(i) {
			este.find('.pagina').hide();
			var dvPagina = este.find('.pagina.' + i);
			if (dvPagina.length == 0) {
				$.get(config.url + ((config.url.indexOf('?') == -1) ? '?' : '') + '&p=' + i + '&l=' + config.limite, function (retorno) {
					config.totalPaginas = retorno.totalPaginas;
					mostraBotoes();
					
					if (config.callback != null) {
						config.callback(retorno, este);
					}
				}, config.tipo);
			}
			else {
				este.find('.pagina').eq(i - 1).show();
				mostraBotoes();
			}
		}
		
		function mostraBotoes() {
			// esconde ou mostra botões dependendo da página
			config.next.show();
			config.prev.show();
			if (pagina >= config.totalPaginas) {
				config.next.hide();
			}
			if (pagina <= 1) {
				config.prev.hide();
			}
		}
		
		if (config.next.length == 0) {
			config.next = este.append('<a class="proxima" style="cursor:pointer;">Próximo</a>');
		}	
		if (config.prev.length == 0) {
			config.prev = este.append('<a class="anterior" style="cursor:pointer;">Anterior</a>');
		}	

		config.next.click(proxima);
		config.prev.click(anterior);
		
		// definir o comportamento para a página.
		function proxima() {
			pagina++;
			if (pagina > config.totalPaginas) {
				pagina--;
			}
			mostraPagina(pagina);
		}
		function anterior() {
			pagina--;
			if (pagina < 0) {
				pagina++;
			}
			mostraPagina(pagina);
		}
		
		mostraPagina(pagina);
		return this;
	};
})(jQuery);